<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of UsuarioMapper
 *
 * @author felipe
 */
class App_Model_UsuarioMapper extends Voitech_Mapper {
    
    public function __construct(App_Model_Usuario $obModel) {
        $this->obModel = $obModel;
    }
    
    public function buscarPorId() {
        $obRow = App_Model_Db_Usuario::build()->buscarId($this->obModel->getCoPessoa());
        if(empty($obRow))
        {
            return;
        }
        $this->carregar($obRow);  
        return $this;
    }
    
    public function carregar(stdClass $obRow) {               
        $this->obModel->setCoPessoa($obRow->co_pessoa)
                        ->setNoUsuario($obRow->no_usuario)
                        ->setStAtivo($obRow->st_ativo)
                        ->setDtCadastro($obRow->dt_cadastro);
        return $this;
    }
    
    public function cadastrar() {
        $arrUsuario = $this->retornarArrayPopulado();   
        $arrUsuario['co_pessoa_cadastro'] = $this->obModel->getObUsuarioCadastro()->getCoPessoa();
        return App_Model_Db_Usuario::build()->insert($arrUsuario);                                         
    }
    
    public function alterar(){
        $arrUsuario = $this->retornarArrayPopulado();
        unset($arrUsuario['co_pessoa']);        
        return App_Model_Db_Usuario::build()->update($arrUsuario,App_Model_Db_Usuario::build()->getAdapter()
                                                                                                ->quoteInto('co_pessoa = ?',$this->obModel->getCoPessoa()));                
    }
    
    public function ativar() {
        if($this->obModel->getCoPessoa() == ''){
            throw new Voitech_Exception('Falta cod. Usuario');
        }
        $arrUsuario = array('st_ativo'=>'S');       
        return App_Model_Db_Usuario::build()->update($arrUsuario,App_Model_Db_Usuario::build()->getAdapter()
                                                                                            ->quoteInto('co_pessoa = ?',$this->obModel->getCoPessoa()));                
    }
    
    public function desativar() {
        if($this->obModel->getCoPessoa() == ''){
            throw new Voitech_Exception('Falta cod. fornecedor');
        }
        $arrUsuario = array('st_ativo'=>'N');
        return App_Model_Db_Usuario::build()->update($arrUsuario
                                                   ,App_Model_Db_Usuario::build()->getAdapter()
                                                                                ->quoteInto('co_pessoa = ?',$this->obModel->getCoPessoa()));                
    }
    
    public function retornarArrayPopulado() {
        $arrUsuario = array('co_pessoa'=>$this->obModel->getCoPessoa()
                           ,'no_usuario'=>$this->obModel->getNoUsuario());
        if( $this->obModel->getDsSenha() != '' ) {
            $arrUsuario['ds_senha'] = $this->obModel->getDsSenha();
        }        
        return $arrUsuario;
   }
   
    public function excluir() {
        if($this->obModel->getCoPessoa() == ''){
            throw new Voitech_Exception('Falta cod. fornecedor');
        }
        return App_Model_Db_Usuario::build()->delete(App_Model_Db_Usuario::build()->getAdapter()->quoteInto('co_pessoa = ?',$this->obModel->getCoPessoa()));                
    }
       
}
